/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.enums.TipoProfissional;
import br.com.foxinline.modelo.Profissional;
import br.com.foxinline.servico.ProfissionalServico;
import br.com.foxinline.utilitario.Caracter;
import br.com.foxinline.utilitario.Msg;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;
import org.primefaces.event.ItemSelectEvent;
import org.primefaces.model.chart.PieChartModel;

/**
 *
 * @author ely
 */
@ManagedBean
@ViewScoped
public class ManagerPesquisarProfissional {

    @EJB
    ProfissionalServico profissionalServico;
    private Profissional profissional;
    private List<Profissional> profissionais;
    private List<Profissional> profissionaisPieModel;
    private Profissional profissionalRemover;
    private PieChartModel pieModel;

    @PostConstruct
    public void init() {
        profissional = new Profissional();
        profissionais = new ArrayList<Profissional>();
        profissionaisPieModel = new ArrayList<Profissional>();

        visualizarPieModel();

    }

    public void pesquisar() {
        profissional.setCpf(Caracter.removecaracter(profissional.getCpf()));
        profissionais = profissionalServico.findProfissional(profissional);
    }

    public void setRemoverProfissional(Profissional prof) {
        this.profissionalRemover = prof;
    }

    public void removerProfissional() {
        try {
            profissionalRemover.setAtivo(Boolean.FALSE);
            profissionalServico.atualizar(profissionalRemover);
            profissionais.remove(profissionalRemover);
            Msg.messagemInfo(Msg.SuccessFull);
        } catch (Exception erro) {
        }
    }

    public void visualizarPieModel() {
        pieModel = new PieChartModel();

        for (TipoProfissional tipo : TipoProfissional.values()) {
            pieModel.set(tipo.getName(), profissionalServico.QtdProfissional(tipo));
        }
    }

    public void itemSelect(ItemSelectEvent event) {
        profissionaisPieModel = new ArrayList<Profissional>();
        if (event.getItemIndex() == 0) {
            profissionaisPieModel = profissionalServico.profissionalTipoProfissional(TipoProfissional.AGENTE_SAUDE);
        }
        if (event.getItemIndex() == 1) {
            profissionaisPieModel = profissionalServico.profissionalTipoProfissional(TipoProfissional.ASSISTENTE_SOCIAL);
        }
        if (event.getItemIndex() == 2) {
            profissionaisPieModel = profissionalServico.profissionalTipoProfissional(TipoProfissional.ENFERMEIRO);
        }
        if (event.getItemIndex() == 3) {
            profissionaisPieModel = profissionalServico.profissionalTipoProfissional(TipoProfissional.MEDICO);
        }

    }

    public List<SelectItem> tipoProfissional() {
        List<SelectItem> items = new ArrayList<SelectItem>();
        for (TipoProfissional tipo : TipoProfissional.values()) {
            items.add(new SelectItem(tipo, tipo.getName()));
        }
        return items;
    }

    public Profissional getProfissional() {
        return profissional;
    }

    public void setProfissional(Profissional profissional) {
        this.profissional = profissional;
    }

    public List<Profissional> getProfissionais() {
        return profissionais;
    }

    public void setProfissionais(List<Profissional> profissionais) {
        this.profissionais = profissionais;
    }

    public Profissional getProfissionalRemover() {
        return profissionalRemover;
    }

    public void setProfissionalRemover(Profissional profissionalRemover) {
        this.profissionalRemover = profissionalRemover;
    }

    public PieChartModel getPieModel() {
        return pieModel;
    }

    public void setPieModel(PieChartModel pieModel) {
        this.pieModel = pieModel;
    }

    public List<Profissional> getProfissionaisPieModel() {
        return profissionaisPieModel;
    }

    public void setProfissionaisPieModel(List<Profissional> profissionaisPieModel) {
        this.profissionaisPieModel = profissionaisPieModel;
    }
}
